
<!DOCTYPE HTML>
<html lang="" >
    <head>
        <meta charset="UTF-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>22.1 自定义进度触发条件 · Harbinger</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="description" content="">
        <meta name="generator" content="GitBook 3.2.3">
        <meta name="author" content="https://github.com/TeamCovertDragon/Harbinger/graphs/contributors">
        
        
    
    <link rel="stylesheet" href="../../gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-katex/katex.min.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-splitter/splitter.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-anchor-navigation-ex/style/plugin.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search/search.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
                
            
        

    

    
        
    
        
    
        
    
        
    
        
    
        
    

        
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
    <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">

    
    <link rel="next" href="custom-item-predicates.html" />
    
    
    <link rel="prev" href="../" />
    

    </head>
    <body>
        
<div class="book">
    <div class="book-summary">
        
            
<div id="book-search-input" role="search">
    <input type="text" placeholder="Type to search" />
</div>

            
                <nav role="navigation">
                


<ul class="summary">
    
    

    

    
        
        <li class="header">总目录</li>
        
        
    

    
        
        <li class="header">前言</li>
        
        
    
        <li class="chapter " data-level="2.1" >
            
                <span>
            
                    
                    前言
            
                </span>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="2.1.1" data-path="../../">
            
                <a href="../../">
            
                    
                    写在前面：这是什么？
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="2.1.2" data-path="../../preface/">
            
                <a href="../../preface/">
            
                    
                    序：《异教与隐士》
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    
        
        <li class="header">正文</li>
        
        
    
        <li class="chapter " data-level="3.1" data-path="../../chapter-01/">
            
                <a href="../../chapter-01/">
            
                    
                    1. 站在巨人的肩膀上
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.1.1" data-path="../../chapter-01/mcp.html">
            
                <a href="../../chapter-01/mcp.html">
            
                    
                    1.1 MCP
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.1.2" data-path="../../chapter-01/forge.html">
            
                <a href="../../chapter-01/forge.html">
            
                    
                    1.2 Forge
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.1.3" data-path="../../chapter-01/forgegradle.md">
            
                <span>
            
                    
                    1.3 ForgeGradle
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.2" data-path="../../chapter-02/">
            
                <a href="../../chapter-02/">
            
                    
                    2. 一切的开始
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.2.1" data-path="../../chapter-02/metadata.html">
            
                <a href="../../chapter-02/metadata.html">
            
                    
                    2.1 Mod 元数据
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.3" data-path="../../chapter-03/">
            
                <a href="../../chapter-03/">
            
                    
                    3. 事件
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.4" data-path="../../chapter-04/">
            
                <a href="../../chapter-04/">
            
                    
                    4. 物品
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.4.1" data-path="../../chapter-04/item-stack.html">
            
                <a href="../../chapter-04/item-stack.html">
            
                    
                    4.1 ItemStack
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.4.2" data-path="../../chapter-04/advanced/">
            
                <a href="../../chapter-04/advanced/">
            
                    
                    4.2 物品进阶
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.4.2.1" data-path="../../chapter-04/advanced/meta-hack.html">
            
                <a href="../../chapter-04/advanced/meta-hack.html">
            
                    
                    4.2.1 Meta-hack
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.4.2.2" data-path="../../chapter-04/advanced/food.html">
            
                <a href="../../chapter-04/advanced/food.html">
            
                    
                    4.2.2 食物
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.4.2.3" data-path="../../chapter-04/advanced/tool.html">
            
                <a href="../../chapter-04/advanced/tool.html">
            
                    
                    4.2.3 工具及武器等
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.4.2.4" data-path="../../chapter-04/advanced/armor.html">
            
                <a href="../../chapter-04/advanced/armor.html">
            
                    
                    4.2.4 护甲
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.4.2.5" data-path="../../chapter-04/advanced/throwable.html">
            
                <a href="../../chapter-04/advanced/throwable.html">
            
                    
                    4.2.5 投掷物
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.5" data-path="../../chapter-05/">
            
                <a href="../../chapter-05/">
            
                    
                    5. 方块
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.5.1" data-path="../../chapter-05/block-state.html">
            
                <a href="../../chapter-05/block-state.html">
            
                    
                    5.1 方块状态
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.5.2" >
            
                <span>
            
                    
                    5.2 高级的方块
            
                </span>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.5.2.1" data-path="../../chapter-05/advanced/ore.html">
            
                <a href="../../chapter-05/advanced/ore.html">
            
                    
                    5.2.1 矿石
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.5.2.2" data-path="../../chapter-05/advanced/crop.html">
            
                <a href="../../chapter-05/advanced/crop.html">
            
                    
                    5.2.2 作物
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.5.2.3" data-path="../../chapter-05/advanced/sapling.html">
            
                <a href="../../chapter-05/advanced/sapling.html">
            
                    
                    5.2.3 树苗
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.5.2.4" data-path="../../chapter-05/advanced/redstone-sensitive.html">
            
                <a href="../../chapter-05/advanced/redstone-sensitive.html">
            
                    
                    5.2.4 红石信号敏感的方块
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.5.2.5" data-path="../../chapter-05/advanced/air-like.html">
            
                <a href="../../chapter-05/advanced/air-like.html">
            
                    
                    5.2.5 类似空气的方块
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.5.3" data-path="../../chapter-05/block-drop.html">
            
                <a href="../../chapter-05/block-drop.html">
            
                    
                    5.3 掉落概论
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.6" data-path="../../chapter-06/">
            
                <a href="../../chapter-06/">
            
                    
                    6. 注册表
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.7" data-path="../../chapter-07/">
            
                <a href="../../chapter-07/">
            
                    
                    7. 物理端、逻辑端与网络 IO
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.7.1" data-path="../../chapter-07/tile-entity-sync.html">
            
                <a href="../../chapter-07/tile-entity-sync.html">
            
                    
                    7.1 TileEntity 内建的解决方案
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.7.2" data-path="../../chapter-07/container-sync.md">
            
                <span>
            
                    
                    7.2 Container 内建的解决方案
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.7.3" data-path="../../chapter-07/entity-sync.html">
            
                <a href="../../chapter-07/entity-sync.html">
            
                    
                    7.3 实体的解决方案
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.7.4" >
            
                <span>
            
                    
                    7.4 Forge 的扩展
            
                </span>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.7.4.1" data-path="../../chapter-07/forge-extension/simple-network-wrapper.html">
            
                <a href="../../chapter-07/forge-extension/simple-network-wrapper.html">
            
                    
                    7.4.1 SimpleNetworkWrapper
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.7.4.2" data-path="../../chapter-07/forge-extension/fml-event-channel.html">
            
                <a href="../../chapter-07/forge-extension/fml-event-channel.html">
            
                    
                    7.4.2 FMLEventChannel
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.8" data-path="../../chapter-08/">
            
                <a href="../../chapter-08/">
            
                    
                    8. 实体
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.9" data-path="../../chapter-09/">
            
                <a href="../../chapter-09/">
            
                    
                    9. 方块实体（TileEntity）
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.9.1" data-path="../../chapter-09/examples/">
            
                <a href="../../chapter-09/examples/">
            
                    
                    9.1 实例
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.9.1.1" data-path="../../chapter-09/examples/inventory.html">
            
                <a href="../../chapter-09/examples/inventory.html">
            
                    
                    9.1.1 箱子，或别的种类的物品容器
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.9.1.2" data-path="../../chapter-09/examples/tank.md">
            
                <span>
            
                    
                    9.1.2 流体储罐
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.9.1.3" data-path="../../chapter-09/examples/grinder.md">
            
                <span>
            
                    
                    9.1.3 打粉机
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.10" data-path="../../chapter-10/">
            
                <a href="../../chapter-10/">
            
                    
                    10. 附魔
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.11" data-path="../../chapter-11/">
            
                <a href="../../chapter-11/">
            
                    
                    11. 渲染概论
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.11.1" data-path="../../chapter-11/baked/">
            
                <a href="../../chapter-11/baked/">
            
                    
                    11.1 方块及物品模型
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.11.1.1" data-path="../../chapter-11/baked/custom-mesh.html">
            
                <a href="../../chapter-11/baked/custom-mesh.html">
            
                    
                    11.1.1 自定义物品模型映射
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.11.1.2" data-path="../../chapter-11/baked/tint.md">
            
                <span>
            
                    
                    11.1.2 染色
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.11.2" data-path="../../chapter-11/custom-baked/">
            
                <a href="../../chapter-11/custom-baked/">
            
                    
                    11.2 自定义模型
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.11.2.1" data-path="../../chapter-11/custom-baked/baked.html">
            
                <a href="../../chapter-11/custom-baked/baked.html">
            
                    
                    11.2.1 IBakedModel
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.11.2.2" data-path="../../chapter-11/custom-baked/unbaked.html">
            
                <a href="../../chapter-11/custom-baked/unbaked.html">
            
                    
                    11.2.2 IModel
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.11.2.3" data-path="../../chapter-11/custom-baked/loader.html">
            
                <a href="../../chapter-11/custom-baked/loader.html">
            
                    
                    11.2.3 ICustomModelLoader
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.11.2.4" data-path="../../chapter-11/custom-baked/item-override.html">
            
                <a href="../../chapter-11/custom-baked/item-override.html">
            
                    
                    11.2.4 ItemOverrideList
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.11.3" data-path="../../chapter-11/entity-model/">
            
                <a href="../../chapter-11/entity-model/">
            
                    
                    11.3 实体模型
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.11.3.1" data-path="../../chapter-11/entity-model/encapsulated-model.html">
            
                <a href="../../chapter-11/entity-model/encapsulated-model.html">
            
                    
                    11.3.1 ModelBase
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.11.3.2" data-path="../../chapter-11/entity-model/events.html">
            
                <a href="../../chapter-11/entity-model/events.html">
            
                    
                    11.3.2 相关事件
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.11.4" data-path="../../chapter-11/tesr.html">
            
                <a href="../../chapter-11/tesr.html">
            
                    
                    11.4 TESR
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.11.5" data-path="../../chapter-11/render-layer.md">
            
                <span>
            
                    
                    11.5 Render Layer
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.11.6" data-path="../../chapter-11/forge-extension/">
            
                <a href="../../chapter-11/forge-extension/">
            
                    
                    11.6 Forge 的扩展
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.11.6.1" data-path="../../chapter-11/forge-extension/forge-v1.html">
            
                <a href="../../chapter-11/forge-extension/forge-v1.html">
            
                    
                    11.6.1 Forge BlockState V1
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.11.6.2" data-path="../../chapter-11/forge-extension/other-format.html">
            
                <a href="../../chapter-11/forge-extension/other-format.html">
            
                    
                    11.6.2 其他格式的模型
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.11.6.3" data-path="../../chapter-11/forge-extension/fast-tesr.html">
            
                <a href="../../chapter-11/forge-extension/fast-tesr.html">
            
                    
                    11.6.3 FastTESR
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.11.6.4" data-path="../../chapter-11/forge-extension/animation.html">
            
                <a href="../../chapter-11/forge-extension/animation.html">
            
                    
                    11.6.4 动画状态机
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.11.6.5" data-path="../../chapter-11/forge-extension/teisr.html">
            
                <a href="../../chapter-11/forge-extension/teisr.html">
            
                    
                    11.6.5 TileEntityItemStackRenderer
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.12" data-path="../../chapter-12/">
            
                <a href="../../chapter-12/">
            
                    
                    12. 药水与状态效果
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.12.1" data-path="../../chapter-12/potion.html">
            
                <a href="../../chapter-12/potion.html">
            
                    
                    12.1 状态效果
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.12.2" data-path="../../chapter-12/attributes-modifier.html">
            
                <a href="../../chapter-12/attributes-modifier.html">
            
                    
                    12.2 状态效果与属性修饰符
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.12.3" data-path="../../chapter-12/potion-type.html">
            
                <a href="../../chapter-12/potion-type.html">
            
                    
                    12.3 药水类型
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.13" data-path="../../chapter-13/">
            
                <a href="../../chapter-13/">
            
                    
                    13. 国际化与本地化
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.13.1" data-path="../../chapter-13/text-component.html">
            
                <a href="../../chapter-13/text-component.html">
            
                    
                    13.1 文本组件（ITextComponent）
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.14" data-path="../../chapter-14/">
            
                <a href="../../chapter-14/">
            
                    
                    14. 用户交互界面（GUI）
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.15" data-path="../../chapter-15/">
            
                <a href="../../chapter-15/">
            
                    
                    15. 音效控制
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.16" data-path="../../chapter-16/">
            
                <a href="../../chapter-16/">
            
                    
                    16. 粒子效果
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.17" data-path="../../chapter-17/">
            
                <a href="../../chapter-17/">
            
                    
                    17. 资源包
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.18" data-path="../../chapter-18/">
            
                <a href="../../chapter-18/">
            
                    
                    18. 用户输入
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.18.1" data-path="../../chapter-18/keyboard.html">
            
                <a href="../../chapter-18/keyboard.html">
            
                    
                    18.1 键盘输入
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.18.2" data-path="../../chapter-18/mouse.html">
            
                <a href="../../chapter-18/mouse.html">
            
                    
                    18.2 鼠标输入
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.19" data-path="../../chapter-19/">
            
                <a href="../../chapter-19/">
            
                    
                    19. 世界生成与新维度
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.19.1" data-path="../../chapter-19/world-gen-feature/">
            
                <a href="../../chapter-19/world-gen-feature/">
            
                    
                    19.1 地图特性（Feature）
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.19.1.1" data-path="../../chapter-19/world-gen-feature/ore.html">
            
                <a href="../../chapter-19/world-gen-feature/ore.html">
            
                    
                    19.1.1 矿石生成
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.19.2" data-path="../../chapter-19/biome/index.md">
            
                <span>
            
                    
                    19.2 生物群系（Biome）
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.19.2.1" data-path="../../chapter-19/biome/feature.md">
            
                <span>
            
                    
                    19.2.1 复用地图特性
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.19.2.2" data-path="../../chapter-19/biome/decorator.md">
            
                <span>
            
                    
                    19.2.2 生物群系装饰器（Decorator）
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.19.2.3" data-path="../../chapter-19/biome/natural-spawn.md">
            
                <span>
            
                    
                    19.2.3 刷新生物
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.19.2.4" data-path="../../chapter-19/biome/flower-entry.md">
            
                <span>
            
                    
                    19.2.3 附加篇：关于骨粉
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.19.3" data-path="../../chapter-19/structure/index.md">
            
                <span>
            
                    
                    19.3 大型结构
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.19.3.1" data-path="../../chapter-19/structure/base.md">
            
                <span>
            
                    
                    19.3.1 MapGenBase
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.19.3.2" data-path="../../chapter-19/structure/structure.md">
            
                <span>
            
                    
                    19.3.2 MapGenStructure
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.19.3.3" data-path="../../chapter-19/structure/template.md">
            
                <span>
            
                    
                    19.3.3 Template
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.19.4" data-path="../../chapter-19/dimension/index.md">
            
                <span>
            
                    
                    19.4 新维度
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.19.4.1" data-path="../../chapter-19/dimension/type.md">
            
                <span>
            
                    
                    19.4.1  可选的 WorldType
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.19.4.2" data-path="../../chapter-19/dimension/dimension.md">
            
                <span>
            
                    
                    19.4.2 WorldProvider
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.19.4.3" data-path="../../chapter-19/dimension/chunk-gen.md">
            
                <span>
            
                    
                    19.4.3 IChunkGenerator
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.19.4.4" data-path="../../chapter-19/dimension/biome-gen.md">
            
                <span>
            
                    
                    19.4.4 BiomeProvider
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.20" data-path="../../chapter-20/">
            
                <a href="../../chapter-20/">
            
                    
                    20. 村庄
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.20.1" data-path="../../chapter-20/villager-profession.html">
            
                <a href="../../chapter-20/villager-profession.html">
            
                    
                    20.1 村民职业
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.20.2" data-path="../../chapter-20/village-structure.md">
            
                <span>
            
                    
                    20.2 村庄结构
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.21" data-path="../../chapter-21/">
            
                <a href="../../chapter-21/">
            
                    
                    21. 合成表
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.21.1" data-path="../../chapter-21/forge-extension/">
            
                <a href="../../chapter-21/forge-extension/">
            
                    
                    21.1 Forge 的扩展
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.21.1.1" data-path="../../chapter-21/forge-extension/ore-dictionary.html">
            
                <a href="../../chapter-21/forge-extension/ore-dictionary.html">
            
                    
                    21.1.1 矿物词典（Ore Dictionary）
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.21.1.2" data-path="../../chapter-21/forge-extension/condition.html">
            
                <a href="../../chapter-21/forge-extension/condition.html">
            
                    
                    21.1.2 IConditionFactory
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.21.1.3" data-path="../../chapter-21/forge-extension/ingredient-factory.html">
            
                <a href="../../chapter-21/forge-extension/ingredient-factory.html">
            
                    
                    21.1.3 IIngredientFactory
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.21.1.4" data-path="../../chapter-21/forge-extension/recipe-factory.html">
            
                <a href="../../chapter-21/forge-extension/recipe-factory.html">
            
                    
                    21.1.4 IRecipeFactory
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.21.1.5" data-path="../../chapter-21/forge-extension/constants.html">
            
                <a href="../../chapter-21/forge-extension/constants.html">
            
                    
                    21.1.5 常量池（_constants.json）
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.21.2" data-path="../../chapter-21/custom-recipe.md">
            
                <span>
            
                    
                    21.2 重新实现 IRecipe
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.21.3" data-path="../../chapter-21/vanilla-furnace.html">
            
                <a href="../../chapter-21/vanilla-furnace.html">
            
                    
                    21.3 扩展篇：熔炉配方及燃料值
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.21.4" data-path="../../chapter-21/vanilla-brewing-stand.html">
            
                <a href="../../chapter-21/vanilla-brewing-stand.html">
            
                    
                    21.4 扩展篇：酿造台配方
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.21.5" data-path="../../chapter-21/forge-extension/anvil-events.html">
            
                <a href="../../chapter-21/forge-extension/anvil-events.html">
            
                    
                    21.5 扩展篇：铁砧“配方”
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.22" data-path="../">
            
                <a href="../">
            
                    
                    22. 进度（Advancement）
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter active" data-level="3.22.1" data-path="custom-criterion.html">
            
                <a href="custom-criterion.html">
            
                    
                    22.1 自定义进度触发条件
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.22.2" data-path="custom-item-predicates.html">
            
                <a href="custom-item-predicates.html">
            
                    
                    22.2 自定义 Item Predicate
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.23" data-path="../../chapter-23/">
            
                <a href="../../chapter-23/">
            
                    
                    23. 战利品表
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.23.1" data-path="../../chapter-23/condition.html">
            
                <a href="../../chapter-23/condition.html">
            
                    
                    23.1 战利品表条件（Loot Condition）
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.23.2" data-path="../../chapter-23/function.html">
            
                <a href="../../chapter-23/function.html">
            
                    
                    23.2 战利品表函数（Loot Function）
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.24" data-path="../../chapter-24/">
            
                <a href="../../chapter-24/">
            
                    
                    24. 命令
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.24.1" data-path="../../chapter-24/function.html">
            
                <a href="../../chapter-24/function.html">
            
                    
                    24.1 函数（.mcfunction）
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.24.2" data-path="../../chapter-24/command-tree.html">
            
                <a href="../../chapter-24/command-tree.html">
            
                    
                    24.2 Forge 的扩展：CommandTreeBase
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.25" data-path="../../chapter-25/">
            
                <a href="../../chapter-25/">
            
                    
                    25. Forge 权限系统
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.25.1" data-path="../../chapter-25/permission-handler.html">
            
                <a href="../../chapter-25/permission-handler.html">
            
                    
                    25.1 IPermissionHandler
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.26" data-path="../../chapter-26/">
            
                <a href="../../chapter-26/">
            
                    
                    26. Forge 配置文件系统
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.26.1" data-path="../../chapter-26/config-gui.html">
            
                <a href="../../chapter-26/config-gui.html">
            
                    
                    26.1 Forge 可视化配置文件编辑界面
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.26.2" data-path="../../chapter-25/raw-config.md">
            
                <span>
            
                    
                    26.2 Configuration 类
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.27" data-path="../../chapter-27/">
            
                <a href="../../chapter-27/">
            
                    
                    27. Forge 流体系统
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.27.1" data-path="../../chapter-27/fluid-stack.html">
            
                <a href="../../chapter-27/fluid-stack.html">
            
                    
                    27.1 Fluid 与 FluidStack
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.27.2" data-path="../../chapter-27/block.html">
            
                <a href="../../chapter-27/block.html">
            
                    
                    27.2 流体方块
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.27.3" data-path="../../chapter-27/container/">
            
                <a href="../../chapter-27/container/">
            
                    
                    27.3 流体容器
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.27.3.1" data-path="../../chapter-27/container/item.html">
            
                <a href="../../chapter-27/container/item.html">
            
                    
                    27.3.1 物品形式的容器
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.27.3.2" data-path="../../chapter-27/container/block.html">
            
                <a href="../../chapter-27/container/block.html">
            
                    
                    27.3.2 方块形式的容器
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.27.3.3" data-path="../../chapter-27/container/interaction.html">
            
                <a href="../../chapter-27/container/interaction.html">
            
                    
                    27.3.3 流体容器之间的交互
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.28" data-path="../../chapter-28/">
            
                <a href="../../chapter-28/">
            
                    
                    28. Forge Capability 系统
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.28.1" data-path="../../chapter-28/built-in/">
            
                <a href="../../chapter-28/built-in/">
            
                    
                    28.1 Forge 内建的 Capability
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.28.1.1" data-path="../../chapter-28/built-in/item.html">
            
                <a href="../../chapter-28/built-in/item.html">
            
                    
                    28.1.1 IItemHandler
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.28.1.2" data-path="../../chapter-28/built-in/fluid.html">
            
                <a href="../../chapter-28/built-in/fluid.html">
            
                    
                    28.2.2 IFluidHandler, IFluidHandlerItem
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.28.1.3" data-path="../../chapter-28/built-in/energy.html">
            
                <a href="../../chapter-28/built-in/energy.html">
            
                    
                    28.2.3 IEnergyStorage
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.28.1.4" data-path="../../chapter-28/built-in/animation.html">
            
                <a href="../../chapter-28/built-in/animation.html">
            
                    
                    28.2.4 IAnimation
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.28.2" data-path="../../chapter-28/custom.md">
            
                <span>
            
                    
                    28.2 属于你自己的第一个 Capability
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.29" data-path="../../chapter-29/">
            
                <a href="../../chapter-29/">
            
                    
                    29. 跨 Mod 兼容及 Add-on 制作
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.29.1" data-path="../../chapter-29/imc.html">
            
                <a href="../../chapter-29/imc.html">
            
                    
                    29.1 跨 Mod 通信（Inter-Mod Communication，IMC）
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.29.2" data-path="../../chapter-29/foreign-capabilities.html">
            
                <a href="../../chapter-29/foreign-capabilities.html">
            
                    
                    29.2 使用第三方 Capability
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="3.30" >
            
                <span>
            
                    
                    30.
            
                </span>
            

            
        </li>
    

    
        
        <li class="header">附录</li>
        
        
    
        <li class="chapter " data-level="4.1" data-path="../../chapter-31/index.md">
            
                <span>
            
                    
                    31. 附录 I：？？？
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.2" data-path="../../chapter-32/index.md">
            
                <span>
            
                    
                    32. 附录 II：？？？
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.3" data-path="../../chapter-33/index.md">
            
                <span>
            
                    
                    33. 附录 III：？？？
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.4" data-path="../../chapter-34/index.md">
            
                <span>
            
                    
                    34. 附录 IV：？？？
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.5" data-path="../../chapter-35/index.md">
            
                <span>
            
                    
                    35. 附录 V：？？？
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.6" data-path="../../chapter-36/index.md">
            
                <span>
            
                    
                    36. 附录 VI：？？？
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.7" data-path="../../chapter-37/index.md">
            
                <span>
            
                    
                    37. 附录 VII：？？？
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.8" data-path="../../chapter-38/index.md">
            
                <span>
            
                    
                    38. 附录 VIII：？？？
            
                </a>
            

            
        </li>
    

    
        
        <li class="header">实战</li>
        
        
    
        <li class="chapter " data-level="5.1" data-path="../../chapter-39/index.md">
            
                <span>
            
                    
                    39. 实战：？？？
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="5.2" data-path="../../chapter-40/index.md">
            
                <span>
            
                    
                    40. 实战：？？？
            
                </a>
            

            
        </li>
    

    
        
        <li class="header">后记</li>
        
        
    
        <li class="chapter " data-level="6.1" >
            
                <span>
            
                    
                    后记
            
                </span>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="6.1.1" data-path="../../afterword/index.md">
            
                <span>
            
                    
                    跋：《Aboard Harbinger Gunship》
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="6.1.2" data-path="../../afterword/credits.md">
            
                <span>
            
                    
                    写在后面：鸣谢名单
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
            Published with GitBook
        </a>
    </li>
</ul>


                </nav>
            
        
    </div>

    <div class="book-body">
        
            <div class="body-inner">
                
                    

<div class="book-header" role="navigation">
    

    <!-- Title -->
    <h1>
        <i class="fa fa-circle-o-notch fa-spin"></i>
        <a href="../.." >22.1 自定义进度触发条件</a>
    </h1>
</div>




                    <div class="page-wrapper" tabindex="-1" role="main">
                        <div class="page-inner">
                            
<div id="book-search-results">
    <div class="search-noresults">
    
                                <section class="normal markdown-section">
                                
                                <div id="anchor-navigation-ex-navbar"><i class="fa fa-navicon"></i><ul><ul><li><span class="title-icon "></span><a href="#&#x81EA;&#x5B9A;&#x4E49;&#x8FDB;&#x5EA6;&#x89E6;&#x53D1;&#x6761;&#x4EF6;"><b>1.1. </b>&#x81EA;&#x5B9A;&#x4E49;&#x8FDB;&#x5EA6;&#x89E6;&#x53D1;&#x6761;&#x4EF6;</a></li><ul><li><span class="title-icon "></span><a href="#&#x771F;&#x5B9E;&#x6848;&#x4F8B;&#xFF1A;&#x53F3;&#x51FB;&#x65B9;&#x5757;&#x65F6;&#x89E6;&#x53D1;&#x7684;-criterion"><b>1.1.1. </b>&#x771F;&#x5B9E;&#x6848;&#x4F8B;&#xFF1A;&#x53F3;&#x51FB;&#x65B9;&#x5757;&#x65F6;&#x89E6;&#x53D1;&#x7684; criterion</a></li></ul></ul></ul></div><a href="#" id="anchorNavigationExGoTop"><i class="fa fa-arrow-up"></i></a><h2 id="&#x81EA;&#x5B9A;&#x4E49;&#x8FDB;&#x5EA6;&#x89E6;&#x53D1;&#x6761;&#x4EF6;"><a name="&#x81EA;&#x5B9A;&#x4E49;&#x8FDB;&#x5EA6;&#x89E6;&#x53D1;&#x6761;&#x4EF6;" class="anchor-navigation-ex-anchor" href="#&#x81EA;&#x5B9A;&#x4E49;&#x8FDB;&#x5EA6;&#x89E6;&#x53D1;&#x6761;&#x4EF6;"><i class="fa fa-link" aria-hidden="true"></i></a>1.1. &#x81EA;&#x5B9A;&#x4E49;&#x8FDB;&#x5EA6;&#x89E6;&#x53D1;&#x6761;&#x4EF6;</h2>
<p>&#x8FDB;&#x5EA6;&#x89E6;&#x53D1;&#x6761;&#x4EF6;&#xFF08;Criterion Trigger&#xFF09;&#x4EE3;&#x8868;&#x4E86;&#x89E3;&#x9501;&#x8FDB;&#x5EA6;&#x7684;&#x67D0;&#x4E00;&#x4E2A;&#x5177;&#x4F53;&#x6761;&#x4EF6;&#x3002;&#x4E00;&#x4E2A;&#x8FDB;&#x5EA6;&#x7684;&#x89E3;&#x9501;&#x53EF;&#x80FD;&#x4F1A;&#x9700;&#x8981;&#x6EE1;&#x8DB3;&#x4E00;&#x4E2A;&#x89E6;&#x53D1;&#x6761;&#x4EF6;&#xFF0C;&#x6216;&#x662F;&#x591A;&#x4E2A;&#x89E6;&#x53D1;&#x6761;&#x4EF6;&#x7684;&#x7EC4;&#x5408;&#x3002;&#x867D;&#x7136;&#x539F;&#x7248;&#x63D0;&#x4F9B;&#x4E86;&#x76F8;&#x5F53;&#x4E30;&#x5BCC;&#x7684;&#x89E6;&#x53D1;&#x6761;&#x4EF6;&#xFF0C;&#x4F46;&#x6211;&#x4EEC;&#x4ECD;&#x7136;&#x4F1A;&#x4E0D;&#x53EF;&#x907F;&#x514D;&#x5730;&#x9047;&#x5230;&#x9700;&#x8981;&#x81EA;&#x5B9A;&#x4E49;&#x89E6;&#x53D1;&#x6761;&#x4EF6;&#x7684;&#x60C5;&#x51B5;&#x3002;&#x4E0D;&#x8FC7;&#xFF0C;&#x5199;&#x4E00;&#x4E2A;&#x65B0;&#x7684;&#x89E6;&#x53D1;&#x6761;&#x4EF6;&#x5176;&#x5B9E;&#x5E76;&#x4E0D;&#x7B80;&#x5355;&#x3002;&#x4E00;&#x4E2A;&#x5B8C;&#x6574;&#x7684; <code>ICriterionTrigger&lt;? extends ICriterionInstance&gt;</code> &#x7684;&#x5B9E;&#x73B0;&#x5927;&#x7EA6;&#x957F;&#x8FD9;&#x6837;&#xFF1A;</p>
<pre><code class="lang-java"><span class="hljs-keyword">import</span> net.minecraft.advancements.ICriterionTrigger;
<span class="hljs-keyword">import</span> net.minecraft.advancements.PlayerAdvancements;
<span class="hljs-keyword">import</span> net.minecraft.advancements.critereon.AbstractCriterionInstance;

<span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CustomTrigger</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ICriterionTrigger</span>&lt;<span class="hljs-title">CustomTrigger</span>.<span class="hljs-title">Instance</span>&gt; </span>{

    <span class="hljs-comment">// &#x7528;&#x4F5C;&#x8BE5; trigger &#x7684;&#x552F;&#x4E00; ID</span>
    <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> ResourceLocation ID = <span class="hljs-keyword">new</span> ResourceLocation(<span class="hljs-string">&quot;my_mod&quot;</span>, <span class="hljs-string">&quot;custom&quot;</span>);

    <span class="hljs-comment">// &#x96C6;&#x4E2D;&#x7BA1;&#x7406;&#x6240;&#x6709;&#x8FDB;&#x5EA6;&#x7528;&#x5230;&#x7684;&#x8BE5;&#x89E6;&#x53D1;&#x6761;&#x4EF6;&#x7684;&#x5177;&#x4F53;&#x5B9E;&#x4F8B;</span>
    <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> Map&lt;PlayerAdvancements, Set&lt;Listener&lt;CustomTrigger.Instance&gt;&gt;&gt; listeners = <span class="hljs-keyword">new</span> HashMap&lt;&gt;();

    <span class="hljs-comment">/*
     * &#x8BE5; Criterion &#x552F;&#x4E00; ID &#x7684;&#x8BBF;&#x95EE;&#x5668;
     */</span>
    <span class="hljs-meta">@Nonnull</span>
    <span class="hljs-meta">@Override</span>
    <span class="hljs-function"><span class="hljs-keyword">public</span> ResourceLocation <span class="hljs-title">getId</span><span class="hljs-params">()</span> </span>{
        <span class="hljs-keyword">return</span> ID;
    }

    <span class="hljs-comment">/*
     * &#x52A0;&#x5165;&#x65B0;&#x7684;&#x76D1;&#x542C;&#x5668;
     */</span>
    <span class="hljs-meta">@Override</span>
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">addListener</span><span class="hljs-params">(PlayerAdvancements playerAdvancements, Listener&lt;CustomTrigger.Instance&gt; listener)</span> </span>{
        <span class="hljs-keyword">this</span>.listeners.computeIfAbsent(playerAdvancements, advancements -&gt; <span class="hljs-keyword">new</span> HashSet&lt;&gt;()).add(listener);
    }

    <span class="hljs-comment">/*
     * &#x6E05;&#x9664;&#x4E0D;&#x7528;&#x7684;&#x76D1;&#x542C;&#x5668;&#xFF0C;&#x907F;&#x514D;&#x5360;&#x7528;&#x8D44;&#x6E90;&#x3002;&#x7531; Minecraft &#x5185;&#x90E8;&#x7EDF;&#x4E00;&#x7BA1;&#x7406;&#x3002;
     */</span>
    <span class="hljs-meta">@Override</span>
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">removeListener</span><span class="hljs-params">(PlayerAdvancements playerAdvancements, Listener&lt;CustomTrigger.Instance&gt; listener)</span> </span>{
        Set&lt;Listener&lt;CustomTrigger.Instance&gt;&gt; listeners = <span class="hljs-keyword">this</span>.listeners.get(playerAdvancements);
        <span class="hljs-keyword">if</span> (listeners != <span class="hljs-keyword">null</span>) {
            listeners.remove(listener);
            <span class="hljs-keyword">if</span> (listeners.isEmpty()) {
                <span class="hljs-keyword">this</span>.listeners.remove(playerAdvancements);
            }
        }
    }

    <span class="hljs-comment">/*
     * &#x76F4;&#x63A5;&#x53D6;&#x6D88;&#x5BF9;&#x67D0;&#x4E2A;&#x73A9;&#x5BB6;&#x8FDB;&#x5EA6;&#x7684;&#x8DDF;&#x8E2A;
     */</span>
    <span class="hljs-meta">@Override</span>
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">removeAllListeners</span><span class="hljs-params">(PlayerAdvancements playerAdvancements)</span> </span>{
        <span class="hljs-keyword">this</span>.listeners.remove(playerAdvancements);
    }

    <span class="hljs-comment">/*
     * &#x62BD;&#x8C61;&#x5DE5;&#x5382;&#x65B9;&#x6CD5;&#xFF0C;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x53CD;&#x5E8F;&#x5217;&#x5316;&#x5668;
     */</span>
    <span class="hljs-meta">@Override</span>
    <span class="hljs-keyword">public</span> CustomTrigger.<span class="hljs-function">Instance <span class="hljs-title">deserializeInstance</span><span class="hljs-params">(JsonObject json, JsonDeserializationContext context)</span> </span>{
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> Instance(...);
    }

    <span class="hljs-comment">/*
     * &#x8BE5;&#x89E6;&#x53D1;&#x5668;&#x7684;&#x5165;&#x53E3;&#xFF0C;&#x9700;&#x8981;&#x5728;&#x5408;&#x9002;&#x7684;&#x65F6;&#x95F4;&#x4E0E;&#x4F4D;&#x7F6E;&#x8C03;&#x7528;
     */</span>
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">trigger</span><span class="hljs-params">(EntityPlayerMP player, Context context)</span> </span>{
        PlayerAdvancements advancements = player.getAdvancements()
        HashSet&lt;Listener&lt;Instance&gt;&gt; listeners = <span class="hljs-keyword">this</span>.listeners.get(advancements);
        <span class="hljs-keyword">if</span> (listeners != <span class="hljs-keyword">null</span>) {
            List&lt;Listener&lt;Instance&gt;&gt; triggered = <span class="hljs-keyword">new</span> ArrayList&lt;&gt;();
            <span class="hljs-keyword">for</span> (Listener&lt;CustomTrigger.Instance&gt; listener : listeners) {
                <span class="hljs-keyword">if</span> (listener.getCriterionInstance().test(context)) {
                    triggered.add(listener);
                }
            }
            <span class="hljs-keyword">for</span> (Listener&lt;CustomTrigger.Instance&gt; listener : triggered) {
                listener.grantCriterion(advancements);
            }
        }
    }

    <span class="hljs-comment">/*
     * &#x62BD;&#x8C61;&#x5DE5;&#x5382;&#x65B9;&#x6CD5;&#x751F;&#x4EA7;&#x51FA;&#x7684;&#x89E6;&#x53D1;&#x5668;&#x5B9E;&#x4F8B;&#x3002;&#x4E0D;&#x80FD;&#x4E3A; private&#xFF0C;&#x5426;&#x5219; outer class &#x7C7B;&#x58F0;&#x660E;&#x4E2D;&#x63A5;&#x53E3;&#x7684;
     * &#x6CDB;&#x578B;&#x53C2;&#x6570;&#x770B;&#x4E0D;&#x5230;&#x8FD9;&#x4E2A;&#x7C7B;&#x578B;&#x3002;
     * &#x6B64;&#x5916;&#xFF0C;ICriterionTrigger &#x7684;&#x7C7B;&#x578B;&#x53C2;&#x6570;&#x7684;&#x8FB9;&#x754C;&#x5B9E;&#x9645;&#x4E0A;&#x662F; extends ICriterionInstance&#xFF0C;
     * &#x8FD9;&#x91CC;&#x4F7F;&#x7528; AbstractCriterionInstance &#x662F;&#x4E3A;&#x4E86;&#x590D;&#x7528;&#x4E00;&#x4E9B; boiler plate code&#xFF08;toString
     * &#x5566;&#x8FD9;&#x6837;&#x7684;&#xFF09;&#x3002;
     */</span>
    <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Instance</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractCriterionInstance</span> </span>{
        Instance(...) {
            <span class="hljs-comment">// &#x8FDB;&#x884C;&#x5FC5;&#x8981;&#x7684;&#x521D;&#x59CB;&#x5316;&#x64CD;&#x4F5C;</span>
            <span class="hljs-comment">// AbstractCriterionInstance &#x7684;&#x6784;&#x9020;&#x5668;&#x8981;&#x6C42;&#x4F20;&#x5165;&#x7684;&#x662F;&#x8FD9;&#x4E2A;&#x8FDB;&#x5EA6;&#x552F;&#x4E00;&#x7684;</span>
            <span class="hljs-comment">// &#x8BC6;&#x522B; ID&#xFF0C;&#x5373; ICriterionTrigger.getId() &#x7684;&#x8FD4;&#x56DE;&#x503C;&#x3002;</span>
            <span class="hljs-keyword">super</span>(CustomTrigger.ID)
        }

        <span class="hljs-comment">/*
         * &#x6BCF;&#x4E00;&#x4E2A;&#x89E6;&#x53D1;&#x5668;&#x5B9E;&#x4F8B;&#x90FD;&#x6709;&#x5176;&#x72EC;&#x7ACB;&#x7684;&#x5224;&#x636E;&#x3002;
         */</span>
        <span class="hljs-function"><span class="hljs-keyword">boolean</span> <span class="hljs-title">test</span><span class="hljs-params">(Context context)</span> </span>{
            <span class="hljs-keyword">return</span> <span class="hljs-keyword">false</span>;
        }
    }
}
</code></pre>
<blockquote>
<p>&#x5929;&#x77E5;&#x9053; Dinnerbone &#x5199;&#x51FA;&#x8FD9;&#x4E2A;&#x4E1C;&#x897F;&#x7684;&#x65F6;&#x5019;&#x5728;&#x60F3;&#x4EC0;&#x4E48;&#x3002;</p>
</blockquote>
<p>&#x7B80;&#x5355;&#x6765;&#x8BF4;&#xFF0C;&#x4E00;&#x4E2A;&#x65B0;&#x7684; Criterion &#x5206;&#x6210;&#x8FD9;&#x4E24;&#x4E2A;&#x90E8;&#x5206;&#xFF1A;</p>
<ol>
<li><code>ICriterionTrigger&lt;? extends AbstractCriterionInstance&gt;</code> &#x7684;&#x5B9E;&#x73B0;&#x3002;&#x6BCF;&#x4E00;&#x4E2A;&#x5B83;&#x7684;&#x5B9E;&#x73B0;&#x7684;&#x5B9E;&#x4F8B;&#x4EE3;&#x8868;&#x4E86;&#x4E00;&#x5927;&#x7C7B;&#x5177;&#x4F53;&#x7684;&#x6761;&#x4EF6;&#xFF0C;&#x6BD4;&#x5982;&#x8BF4;&#xFF0C;&#x5BF9;&#x4E8E; <code>minecraft:consume_item</code>&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x6307;&#x5B9A;&#x4E0D;&#x540C;&#x7684;&#x7269;&#x54C1;&#x6765;&#x83B7;&#x5F97;&#x4E0D;&#x540C;&#x7684;&#x6761;&#x4EF6;&#xFF0C;&#x4F46;&#x8FD9;&#x4E9B;&#x4E0D;&#x540C;&#x7684;&#x6761;&#x4EF6;&#x90FD;&#x5C5E;&#x4E8E; <code>minecraft:consume_item</code> &#x8FD9;&#x4E2A;&#x7C7B;&#x578B;&#x3002;&#x6362;&#x8A00;&#x4E4B;&#xFF0C;&#x8FD9;&#x662F;&#x4EAB;&#x5143;&#x6A21;&#x5F0F;&#xFF08;Flyweight pattern&#xFF09;&#x4E2D;&#x7684;&#x5171;&#x7528;&#x5BF9;&#x8C61;&#xFF08;Flyweight&#xFF09;&#xFF0C;&#x4E3B;&#x8981;&#x8D1F;&#x8D23;&#x7BA1;&#x7406;&#x6240;&#x6709;&#x5177;&#x4F53;&#x7684;&#x89E6;&#x53D1;&#x6761;&#x4EF6;&#x5B9E;&#x4F8B;&#xFF0C;&#x540C;&#x65F6;&#x517C;&#x804C;&#x62BD;&#x8C61;&#x5DE5;&#x5382;&#xFF08;&#x89C1; 2.&#xFF09;&#x3002;</li>
<li><code>ICriterionInstance</code> &#x7684;&#x5B9E;&#x73B0;&#x3002;&#x5B83;&#x4EE3;&#x8868;&#x4E86;&#x5177;&#x4F53;&#x7684;&#x4E00;&#x4E2A;&#x6761;&#x4EF6;&#xFF0C;&#x5373;&#x4FBF;&#x8BC6;&#x522B; ID &#x548C;&#x522B;&#x7684;&#x6761;&#x4EF6;&#x4E00;&#x81F4;&#xFF0C;&#x5176;&#x5177;&#x4F53;&#x5224;&#x65AD;&#x7EC6;&#x8282;&#x4E5F;&#x672A;&#x5FC5;&#x76F8;&#x540C;&#x3002;&#x5B83;&#x7684;&#x5B9E;&#x4F8B;&#x7531;&#x4E00;&#x4E2A;&#x62BD;&#x8C61;&#x5DE5;&#x5382;&#x4EA7;&#x51FA;&#xFF0C;&#x800C;&#x8FD9;&#x4E2A;&#x62BD;&#x8C61;&#x5DE5;&#x5382;&#x6B63;&#x662F;&#x7531;&#x5BF9;&#x5E94;&#x7684; <code>ICriterionTrigger</code> &#x517C;&#x804C;&#x7684;&#xFF08;&#x5373; <code>deserializeInstance</code> &#x65B9;&#x6CD5;&#xFF09;&#x3002;</li>
</ol>
<p>&#x800C;&#x4F7F;&#x7528;&#x8FD9;&#x4E2A;&#x65B0;&#x7684; Criterion &#x7684;&#x65B9;&#x5F0F;&#x662F;&#x8FD9;&#x6837;&#x7684;&#xFF1A;</p>
<ol>
<li>&#x9996;&#x5148;&#x6CE8;&#x518C; <code>ICriterionTrigger</code> &#x7684;&#x5B9E;&#x4F8B;&#x3002;&#x901A;&#x8FC7;&#x539F;&#x7248;&#x7684; <code>CriteriaTriggers.register</code> &#x5B8C;&#x6210;&#x6CE8;&#x518C;&#x3002;&#x8FD9;&#x4E2A;&#x65B9;&#x6CD5;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x88AB; Forge patch &#x8FC7;&#x7684;&#xFF0C;&#x5728; patch &#x4E4B;&#x524D;&#x5B83;&#x4E0D;&#x80FD;&#x6B63;&#x786E;&#x5904;&#x7406; ID &#x4E2D;&#x7684; namespace &#x4E0D;&#x662F; <code>minecraft</code> &#x7684; criterion&#x3002;&#x8FD9;&#x4E2A;&#x65B9;&#x6CD5;&#x8FD4;&#x56DE;&#x88AB;&#x6CE8;&#x518C;&#x7684; criterion&#xFF0C;&#x6240;&#x4EE5;&#x4F60;&#x53EF;&#x4EE5;&#x5199;&#xFF1A;<pre><code class="lang-java">CustomTrigger TRIGGER = CriteriaTriggers.register(<span class="hljs-keyword">new</span> CustomTrigger());
</code></pre>
</li>
<li>&#x5728;&#x9002;&#x5F53;&#x7684;&#x65F6;&#x5019;&#x8C03;&#x7528; <code>TRIGGER.trigger(player, ...)</code>&#xFF0C;&#x5176;&#x4E2D; <code>player</code> &#x662F;&#x73A9;&#x5BB6;&#x5B9E;&#x4F53;&#xFF0C;<code>...</code> &#x4EE3;&#x8868;&#x4F60;&#x9700;&#x8981;&#x7684;&#x4E0A;&#x4E0B;&#x6587;&#x4FE1;&#x606F;&#x3002;&#x73A9;&#x5BB6;&#x5B9E;&#x4F53;&#x7684;&#x4F5C;&#x7528;&#x662F;&#x63D0;&#x4F9B; <code>PlayerAdvancements</code> &#x5BF9;&#x8C61;&#x3002;&#x4E0A;&#x6587;&#x4E2D;&#x7684;&#x793A;&#x4F8B;&#x4EE3;&#x7801;&#x4F7F;&#x7528;&#x4E86; <code>Context</code>&#x2014;&#x2014;&#x8FD9;&#x662F;&#x4E00;&#x4E2A;&#x5047;&#x60F3;&#x7684; parameter object&#xFF0C;&#x5728;&#x8FD9;&#x91CC;&#x5145;&#x5F53;&#x4E0A;&#x4E0B;&#x6587;&#x7684;&#x5BB9;&#x5668;&#x3002;</li>
<li><code>TRIGGER.trigger(player, ...)</code> &#x67E5;&#x8868;&#x83B7;&#x5F97;&#x5BF9;&#x5E94;&#x7684; <code>Set&lt;Listener&lt;? extends ICriterionInstance&gt;&gt;</code>&#xFF0C;&#x82E5;&#x5B58;&#x5728;&#x5219;&#x904D;&#x5386;&#x6240;&#x6709;&#x5DF2;&#x77E5;&#x7684; <code>ICriterionInstance</code>&#xFF0C;&#x5E76;&#x6839;&#x636E;&#x4E0A;&#x4E0B;&#x6587;&#x8FC7;&#x6EE4;&#x51FA;&#x6240;&#x6709;&#x6EE1;&#x8DB3;&#x89E6;&#x53D1;&#x6761;&#x4EF6;&#x7684; <code>Listener&lt;? extends ICriterionInstance&gt;</code>&#x3002;&#x7136;&#x540E;&#x5BF9;&#x6240;&#x6709;&#x6EE1;&#x8DB3;&#x6761;&#x4EF6;&#x7684; <code>Listener&lt;? extends ICriterionInstance&gt;</code> &#x5BF9;&#x8C61;&#x8C03;&#x7528; <code>grantCriterion(PlayerAdvancements)</code> &#x65B9;&#x6CD5;&#x3002;&#x4E0A;&#x6587;&#x4E2D;&#x793A;&#x4F8B;&#x4EE3;&#x7801;&#x4E4B;&#x6240;&#x4EE5;&#x4F7F;&#x7528;&#x4E86;&#x5355;&#x72EC;&#x7684; <code>List</code> &#x662F;&#x56E0;&#x4E3A; Minecraft &#x4F1A;&#x5728; <code>grantCriterion</code> &#x88AB;&#x8C03;&#x7528;&#x65F6;&#x6E05;&#x7406;&#x4E0D;&#x518D;&#x4F7F;&#x7528;&#x7684; <code>ICriterionInstance</code>&#xFF0C;&#x82E5;&#x5904;&#x7406;&#x4E0D;&#x5F53;&#xFF0C;&#x6781;&#x6613;&#x5BFC;&#x81F4; <code>ConcurrentModificationException</code> &#x51FA;&#x73B0;&#x3002;<!-- TODO：照这么说那个 HashMap 可以改用 IdentityHashMap，直接使用 == 比较，绕开 Object.equals？--></li>
</ol>
<h3 id="&#x771F;&#x5B9E;&#x6848;&#x4F8B;&#xFF1A;&#x53F3;&#x51FB;&#x65B9;&#x5757;&#x65F6;&#x89E6;&#x53D1;&#x7684;-criterion"><a name="&#x771F;&#x5B9E;&#x6848;&#x4F8B;&#xFF1A;&#x53F3;&#x51FB;&#x65B9;&#x5757;&#x65F6;&#x89E6;&#x53D1;&#x7684;-criterion" class="anchor-navigation-ex-anchor" href="#&#x771F;&#x5B9E;&#x6848;&#x4F8B;&#xFF1A;&#x53F3;&#x51FB;&#x65B9;&#x5757;&#x65F6;&#x89E6;&#x53D1;&#x7684;-criterion"><i class="fa fa-link" aria-hidden="true"></i></a>1.1.1. &#x771F;&#x5B9E;&#x6848;&#x4F8B;&#xFF1A;&#x53F3;&#x51FB;&#x65B9;&#x5757;&#x65F6;&#x89E6;&#x53D1;&#x7684; criterion</h3>
<p>&#x3010;&#x65BD;&#x5DE5;&#x4E2D;&#x3011;</p>

                                
                                </section>
                            
    </div>
    <div class="search-results">
        <div class="has-results">
            
            <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
            <ul class="search-results-list"></ul>
            
        </div>
        <div class="no-results">
            
            <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
            
        </div>
    </div>
</div>

                        </div>
                    </div>
                
            </div>

            
                
                <a href="../" class="navigation navigation-prev " aria-label="Previous page: 22. 进度（Advancement）">
                    <i class="fa fa-angle-left"></i>
                </a>
                
                
                <a href="custom-item-predicates.html" class="navigation navigation-next " aria-label="Next page: 22.2 自定义 Item Predicate">
                    <i class="fa fa-angle-right"></i>
                </a>
                
            
        
    </div>

    <script>
        var gitbook = gitbook || [];
        gitbook.push(function() {
            gitbook.page.hasChanged({"page":{"title":"22.1 自定义进度触发条件","level":"3.22.1","depth":2,"next":{"title":"22.2 自定义 Item Predicate","level":"3.22.2","depth":2,"path":"chapter-22/forge-extension/custom-item-predicates.md","ref":"chapter-22/forge-extension/custom-item-predicates.md","articles":[]},"previous":{"title":"22. 进度（Advancement）","level":"3.22","depth":1,"path":"chapter-22/index.md","ref":"chapter-22/index.md","articles":[{"title":"22.1 自定义进度触发条件","level":"3.22.1","depth":2,"path":"chapter-22/forge-extension/custom-criterion.md","ref":"chapter-22/forge-extension/custom-criterion.md","articles":[]},{"title":"22.2 自定义 Item Predicate","level":"3.22.2","depth":2,"path":"chapter-22/forge-extension/custom-item-predicates.md","ref":"chapter-22/forge-extension/custom-item-predicates.md","articles":[]}]},"dir":"ltr"},"config":{"plugins":["katex","splitter","expandable-chapters","anchor-navigation-ex"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"splitter":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"flow":{"line-color":"red"},"katex":{},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"anchor-navigation-ex":{"associatedWithSummary":true,"float":{"floatIcon":"fa fa-navicon","level1Icon":"","level2Icon":"","level3Icon":"","showLevelIcon":false},"mode":"float","multipleH1":true,"pageTop":{"level1Icon":"","level2Icon":"","level3Icon":"","showLevelIcon":false},"printLog":false,"showGoTop":true,"showLevel":true},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"expandable-chapters":{}},"theme":"default","author":"https://github.com/TeamCovertDragon/Harbinger/graphs/contributors","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Harbinger","gitbook":"*","description":"Just Another FMLTutor For Future"},"file":{"path":"chapter-22/forge-extension/custom-criterion.md","mtime":"2019-08-01T09:51:56.555Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-08-01T10:14:55.065Z"},"basePath":"../..","book":{"language":""}});
        });
    </script>
</div>

        
    <script src="../../gitbook/gitbook.js"></script>
    <script src="../../gitbook/theme.js"></script>
    
        
        <script src="../../gitbook/gitbook-plugin-splitter/splitter.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-search/search-engine.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-search/search.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
        
    

    </body>
</html>

